<?php 

require_once("controller/Controller.class.php");
require_once("model/TarefaModel.class.php");
require_once("view/TarefaView.class.php");
require_once("classes/Tarefa.class.php");
require_once("classes/status.class.php");
require_once("model/StatusModel.class.php");
require_once("model/UsuarioModel.class.php");
require_once("classes/Usuario.class.php");

class TarefaController extends Controller{
    
    private $view;
    private $model;
    
    public function __construct(){
        $this->view = new TarefaView();
        $this->model = new TarefaModel();
        $this->model->setTabela("tarefa");
    }
    
    public function listaTarefa(){
        $dados = $this->model->selecionarTodos();
        $this->view->atribuirValor("idtarefa", $dados["idtarefa"]);
        $this->view->atribuirValor("nome_tarefa", $dados["nome"]);
        $this->view->atribuirValor("status", $this->nomeStatus($dados["idstatus"]));
        $this->view->atribuirValor("idusuario", $this->nomeUsuario($dados["idusuario"]));
        $this->view->atribuirValor("data_cadastro", $dados["data_cadastro"]);
        $this->view->atribuirValor("data_alteracao", $dados["data_alteracao"]);
        $this->view->atribuirValor("observacao", $dados["observacao"]);
        $this->view->listaTarefa();
    }
    
    public function addTarefa(){
        if($_POST['nome_tarefa']){
            $tarefa = new Tarefa();
            $tarefa->setNome($_POST['nome_tarefa']);
            $tarefa->setIdStatus($_POST['status']);
            $tarefa->setObservacao($_POST['observacao']);
            $tarefa->setIdUsuario($_POST['usuario']);
            $tarefa->setDataCadastro($this->now());
            $tarefa->setDataAlteracao($this->now());
            $this->model->insert($tarefa);
            $this->redirect("tarefa.php");
        }
        else{
            $listaStatus = new StatusModel();
            $listaStatus = $listaStatus->selecionarTodos();
            $this->view->atribuirValor("idstatus", $listaStatus['idstatus']);
            $this->view->atribuirValor("status", $listaStatus['status']);
            $listaUsuario = $this->model->listarUsuario();
            $this->view->atribuirValor("idusuario", $listaUsuario['idusuario']);
            $this->view->atribuirValor("usuario", $listaUsuario['nome']);
            $this->view->addTarefa();
        }
    }
    
    public function editTarefa($idtarefa){
        if($_POST['nome_tarefa']){
            $tarefa = new Tarefa();
            $tarefa->setIdTarefa($_REQUEST['idtarefa']);
            $tarefa->setNome($_POST['nome_tarefa']);
            $tarefa->setIdStatus($_POST['status']);
            $tarefa->setObservacao($_POST['observacao']);
            $tarefa->setIdUsuario($_POST['usuario']);
            $tarefa->setDataAlteracao($this->now());
            $campos = array(
                'nome',
                'idstatus_fk',
                'observacao',
                'idusuario_fk'
            );
            $valores = array(
                $tarefa->getNome(),
                $tarefa->getIdStatus(),
                $tarefa->getObservacao(),
                $tarefa->getIdUsuario()
            );
            $criteria = "idtarefa = {$tarefa->getIdTarefa()}";
            $this->model->update($campos, $valores, $criteria);
            $this->redirect("tarefa.php");
        }
        else{
            $tarefa = new Tarefa();
            $tarefa->setIdTarefa($idtarefa);
            $dados = $this->model->selecionar($tarefa);
            $tarefa->setIdUsuario($dados['idusuario']);
            $tarefa->setNome($dados["nome"]);
            $tarefa->setObservacao($dados['observacao']);
            $tarefa->setIdStatus($dados['idstatus']);
            $listaStatus = $this->listarStatus();
            $this->view->atribuirValor("idstatus", $listaStatus['idstatus']);
            $this->view->atribuirValor("status", $listaStatus['status']);
            $listaUsuario = $this->listarUsuario();
            var_dump($listaUsuario);
            $this->view->atribuirValor("observacao", $tarefa->getObservacao());
            $this->view->atribuirValor("idusuario_esco", $tarefa->getIdUsuario());
            $this->view->atribuirValor("nome_usuario_esco", $tarefa->getIdUsuario());
            $this->view->atribuirValor("nome_tarefa", $tarefa->getNome());
            $this->view->atribuirValor("idstatus_escolhido", $tarefa->getIdStatus());
            $this->view->atribuirValor("idusuario", $listaUsuario['idusuario']);
            $this->view->atribuirValor("usuario", $listaUsuario['usuario']);
            $this->view->atribuirValor("idtarefa", $tarefa->getIdTarefa());
            $this->view->editTarefa();
        }
    }

    public function nomeStatus($idstatus){
        if(is_array($idstatus)){
            foreach ($idstatus as $key => $value):
                $status = new Status();
                $status->setIdStatus($value);
                $statusModel = new StatusModel();
                $lin = $statusModel->selecionar($status);
                $result[$key] = $lin['status'];
            endforeach;
        }
        else{
            $status = new Status();
            $status->setIdStatus($idstatus);
            $statusModel = new StatusModel();
            $result = $statusModel->selecionar($status);
        }
        return $result;
    }
    
    public function nomeUsuario($idusuario){       
        if(is_array($idusuario)){
            foreach ($idusuario as $key => $value):
                $usuario = new Usuario();
                $usuario->setCodigo($idusuario[$key]);
                $usuarioModel = new UsuarioModel();
                $criteria = "idusuario = {$usuario->getCodigo()}";
                $lin = $usuarioModel->select($criteria);
                $result[$key] = $lin['nome'];
            endforeach;
        }
        else{
            $usuario = new Usuario();
            $usuario->setCodigo($idusuario);
            $usuarioModel = new UsuarioModel();
            $criteria = "idusuario = {$usuario->getCodigo()}";
            $lin = $usuarioModel->select($criteria);
            $result = $lin['nome'];
        }
        return $result;
    }            
    
    public function listarStatus(){
        $statusModel = new StatusModel();    
        $result = $statusModel->selectAll();
        foreach ($result as $key => $value):
            $status[$key] = $value['status'];
            $idstatus[$key] = $value['idstatus'];
        endforeach;
        return array('status'=>$status,'idstatus'=>$idstatus);
    }
    
    public function listarUsuario(){
        $result = $usuarioModel = new UsuarioModel();    
        $result = $usuarioModel->selectAll();
        foreach ($result as $key => $value):
            $usuario[$key] = $value['usuario'];
            $idusuario[$key] = $value['idusuario'];
        endforeach;
        return array('usuario'=>$usuario,'idusuario'=>$idusuario);
    }
    
    public function delTarefa($idtarefa){
        $criteria = "idtarefa = {$idtarefa}";    
        $this->model->delete($criteria);
        $this->redirect("tarefa.php");
    }
}

?>